import { http } from "@/utils/http";

export type ruleTabelType = Partial<{
  pageNum: number;
  pageSize: number;
  total: number;
  pages: number;
  data: [
    {
      id: number;
      ruleCode: string;
      ruleName: string;
      inspectTypeDesc: string;
      facCodeDesc: string;
      classNameDesc: string;
      inspectAreaDesc: string;
      updateName: string;
      updateTime: string;
      ruleCodeOrName: string;
      inspectType: number;
      inspectArea: string;
    }
  ];
}>;
export type queryInspectListParamsType = Partial<{
  value: string;
  facCode: string;
  className: string;
  systemCodes: string[];
  typeIds: string[];
  modelIds: string[];
  categoryIds: string[];
  positionCodes: string[];
}>;
// 巡检规则-删除-禁用
export const delInspectRule = (id: string) => {
  return http.request("post", `/digitaltwins/api/v1/inspectRule/del/${id}`);
};
// 巡检规则-查询详情数据
export const getInspectRule = (data: any) => {
  return http.request("post", `/digitaltwins/api/v1/inspectRule/get`, { data });
};
// 巡检规则-规则编码
export const getRuleCode = () => {
  return http.request("post", `/digitaltwins/api/v1/inspectRule/getRuleCode`);
};
// 巡检规则-查询分页列表接口
export const queryPage = (data: string) => {
  return http.request<ruleTabelType>("post", `/digitaltwins/api/v1/inspectRule/queryPage`, { data });
};
// 巡检规则-新增数据
export const saveInspectRule = (data: any) => {
  return http.request("post", `/digitaltwins/api/v1/inspectRule/save`, { data });
};
// 巡检规则-修改数据
export const updateInspectRule = (data: any) => {
  return http.request("post", `/digitaltwins/api/v1/inspectRule/update`, {
    data
  });
};
// 巡检规则-设备列表
export const queryInspectList = (data: any) => {
  return http.request("post", `/digitaltwins/api/v1/equipment/queryInspectList`, {
    data
  });
};
// 参数接口
export interface GetPreviewTemplateItemParams {
  /* */
  factoryId?: string;

  /*模版集合 */
  temCodes?: Record<string, unknown>[];

  /*设备集合 */
  eqpIdList?: Record<string, unknown>[];
}

// 响应接口
export interface GetPreviewTemplateItemRes {
  /*环境巡检内容项 */
  contentDTOList: {
    /*巡检项目内容id */
    inspectTaskTemContentId: number;

    /*巡检项目内容 */
    inspectItemContent: string;

    /*巡检项类型 1 抄表类 2 判断类 */
    inspectItemType: number;

    /*巡检项类型描述 */
    inspectItemTypeDesc: string;

    /*巡检项 */
    contentItemDTOList: {
      /*主键 */
      id: number;

      /*抄表方式 1 自动 2 手动 */
      meterReadingMode: number;

      /*抄表方式描述 */
      meterReadingModeDesc: string;

      /*抄表项 */
      meterReadingItem: string;

      /*单位 */
      unit: string;

      /*最大值 */
      maxValue: string;

      /*最小值 */
      minValue: string;

      /*设备ID */
      eqpId: string;

      /*设备名字 */
      eqpName: string;

      /*自动抄表点 */
      autoMeterReadingPoint: string;

      /*巡检项 */
      inspectItem: string;

      /*巡检内容 */
      inspectContent: string;

      /*巡检内容范围(1-文本,2-数字,3-判断,4-选择) */
      inspectContentRangeCode: number;

      /*巡检内容范围描述 */
      inspectContentRangeCodeDesc: string;

      /*巡检内容范围 */
      inspectContentRangeValue: string;

      /*执行人id */
      executeBy: number;

      /*执行人名称 */
      executeByName: string;

      /*执行结果 */
      result: string;

      /*执行时间 */
      execTime: Record<string, unknown>;
    }[];
  }[];

  /*设备巡检内容项 */
  eqpContentDTOList: {
    /*设备id */
    eqpId: string;

    /*设备名称 */
    eqpName: string;

    /*巡检内容项 */
    contentDTOList: {
      /*巡检项目内容id */
      inspectTaskTemContentId: number;

      /*巡检项目内容 */
      inspectItemContent: string;

      /*巡检项类型 1 抄表类 2 判断类 */
      inspectItemType: number;

      /*巡检项类型描述 */
      inspectItemTypeDesc: string;

      /*巡检项 */
      contentItemDTOList: {
        /*主键 */
        id: number;

        /*抄表方式 1 自动 2 手动 */
        meterReadingMode: number;

        /*抄表方式描述 */
        meterReadingModeDesc: string;

        /*抄表项 */
        meterReadingItem: string;

        /*单位 */
        unit: string;

        /*最大值 */
        maxValue: string;

        /*最小值 */
        minValue: string;

        /*设备ID */
        eqpId: string;

        /*设备名字 */
        eqpName: string;

        /*自动抄表点 */
        autoMeterReadingPoint: string;

        /*巡检项 */
        inspectItem: string;

        /*巡检内容 */
        inspectContent: string;

        /*巡检内容范围(1-文本,2-数字,3-判断,4-选择) */
        inspectContentRangeCode: number;

        /*巡检内容范围描述 */
        inspectContentRangeCodeDesc: string;

        /*巡检内容范围 */
        inspectContentRangeValue: string;

        /*执行人id */
        executeBy: number;

        /*执行人名称 */
        executeByName: string;

        /*执行结果 */
        result: string;

        /*执行时间 */
        execTime: Record<string, unknown>;
      }[];
    }[];

    /* */
    inspectTaskMissDTO: {
      /* */
      factoryId: string;

      /*主键 */
      id: number;

      /*巡检任务编号 */
      inspectTaskCode: string;

      /*巡检规则编号 */
      inspectRuleCode: string;

      /*巡检区域描述 */
      inspectAreaDesc: string;

      /*设备id/区域 */
      eqpAreaCode: string;

      /*缺失类型：EQP：设备；ENV：环境 */
      missingType: string;

      /*缺失类型描述 */
      missingTypeDesc: string;

      /*缺失等级：NORMAL：一般；MAJOR：重大 */
      missingLevel: string;

      /*缺失等级描述 */
      missingLevelDesc: string;

      /*缺失描述 */
      missingDesc: string;

      /*缺失详细位置 */
      missingDetailPosition: string;

      /*缺失照片 */
      missingPictureList: {
        /* */
        id: number;

        /*文件原始名称 */
        originalName: string;

        /*文件名称 */
        fileName: string;

        /*文件类型：JPG/DOC/EXCEL 等 */
        fileType: string;

        /*文件大小，单位：K */
        fileSize: number;

        /*文件URL */
        fileUrl: string;

        /*所属模块名称：PROCESS/ENERGY/DIGITALTWINS 等 */
        moduleName: string;

        /*所属模块的记录ID */
        moduleId: number;

        /*所属用户ID */
        accountId: number;

        /*所属用户名称 */
        accountName: string;

        /*所属用户姓名 */
        realName: string;

        /*记录状态：VALID - 有效；INVALID - 无效 */
        status: string;

        /* */
        createTime: Record<string, unknown>;

        /* */
        updateTime: Record<string, unknown>;

        /*图片信息 */
        pic: Record<string, unknown>[];
      }[];

      /*负责人id */
      principalId: number;

      /*负责人名称 */
      principalName: string;
    };
  }[];
}

/**
 * 巡检规则-规则预览
 * @param {object} params 巡检规则预览查询
 * @param {string} params.factoryId
 * @param {array} params.temCodes 模版集合
 * @param {array} params.eqpIdList 设备集合
 * @returns
 */
export function getPreviewTemplateItem(data: GetPreviewTemplateItemParams): Promise<GetPreviewTemplateItemRes> {
  return http.post(`/digitaltwins/api/v1/inspectRule/getPreviewTemplateItem`, { data });
}
/**
 * 指标-根据设备编码获取指标
 * @param {object} params 指标查询
 * @param {string} params.factoryId
 * @param {string} params.facCode 厂区
 * @param {number} params.pageNum
 * @param {number} params.pageSize
 * @param {string} params.orderByColumn
 * @param {string} params.isAsc
 * @param {string} params.measureName 指标名称
 * @param {string} params.tagCode 绑定点位
 * @param {string} params.measureCode 指标编码
 * @param {number} params.isNeedCalculate 是否需要计算：0-否；1-是
 * @param {string} params.measureTypeCode 指标类型
 * @param {number} params.createBy 创建人id
 * @param {string} params.className 所属科室
 * @param {string} params.measureSource 指标来源
 * @param {number} params.isMaintain 是否维护：0-否；1-是
 * @param {string} params.eqpId 设备编码
 * @param {string} params.systemCode 系统
 * @param {string} params.measureTag 标签：可视化-visual_flag; 机械科-machine_flag; 电科-electricity_flag; 水科-water_flag; 气化科-gas_flag; 能源-energy_flag; 菜单-menu_flag,菜单具体详情查看字典
 * @param {array} params.measureCodes 指标编码
 * @param {string} params.orderBy
 * @returns
 */
export function queryMeasureBasicByEqpId(data) {
  return http.post(`/account/api/v1/publish/measure/queryMeasureBasicByEqpId`, { data });
}
